"use strict";
// 真值可能不是你在字典中可以找到的词，但你会在 JavaScript 中听到很多东西。
// 在 JavaScript 中，我们可以在条件、&&、||、if 语句、布尔否定 (!) 等中使用任何表达式。例如，if 语句不希望它们的条件总是具有 boolean 类型。
function getUsersOnlineMessage(numUsersOnline) {
    if (numUsersOnline) {
        return `There are ${numUsersOnline} online now!`;
    }
    return "Nobody's here. :(";
}
// 在 JavaScript 中，像 if 这样的构造首先将它们的条件 “强制转换” 到 boolean 来理解它们，然后根据结果是 true 还是 false 来选择它们的分支。像这样的值
// 0
// NaN
// ""（空字符串）
// 英"" (the empty string)
// 0n（bigint 版本零）
// 英0n (the bigint version of zero)
// null
// undefined
// 全部强制转换为 false，其他值强制转换为 true。你始终可以通过
// Boolean 函数运行值或使用较短的双布尔否定来将值强制为 boolean。
// （后者的优点是 TypeScript 推断出一个缩小的字面布尔类型 true，而将第一个推断为类型 boolean。）
// both of these result in 'true'
Boolean("hello"); // type: boolean, value: true
console.log(!!"world"); // type: true,    value: true
function printAll(str) {
    if (str && typeof str === "object") {
        for (const i of str) {
            //null通过typeof是object 所以加上一个str&&
            return i + i;
        }
    }
    else if (typeof str === "string") {
        return str;
    }
    else {
    }
}
function multiplyAll(values, factor) {
    if (!values) {
        return values;
    }
    else {
        return values.map((x) => x * factor);
    }
}
